﻿using Cotizav.LogicaNegocio;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cotizav.Presentacion.WinForms.Cotizacion
{
    public partial class MostrarCotizacion : Form
    {
        private Entidades.Cotizacion selectedCotizacion;

        private List<Entidades.TipoCotizacion> listTipoCotizacion;

        public MostrarCotizacion()
        {
            InitializeComponent();
        }

        public MostrarCotizacion(Entidades.Cotizacion selectedCotizacion) : this()
        {
            // TODO: Complete member initialization
            this.selectedCotizacion = selectedCotizacion;
        }

        private void MostrarCotizacion_Load(object sender, EventArgs e)
        {
            LoadTipoCotizacion();

            if (selectedCotizacion != null)
            {
                CargarCotizacion(selectedCotizacion);
            }
        }

        private void LoadTipoCotizacion()
        {
            TipoCotizacionBLL tipocotizacionBLL = new TipoCotizacionBLL();
            listTipoCotizacion = tipocotizacionBLL.Listar();
        }

        private void CargarCotizacion(Entidades.Cotizacion selCotizacion)
        {
            ClienteBLL clienteBLL = new ClienteBLL();
            CotizacionBLL cotizacionBLL = new CotizacionBLL();
            Entidades.Cotizacion getCotizacion = cotizacionBLL.Obtener(selCotizacion);

            if (getCotizacion != null)
            {
                Entidades.Cliente selCliente = getCotizacion.IdCliente.HasValue ? clienteBLL.ListarCliente(new Entidades.Cliente() { IdCliente = getCotizacion.IdCliente.Value }) : null;
                
                txtFecha.Text = getCotizacion.FechaRegistro.HasValue ? getCotizacion.FechaRegistro.Value.ToShortDateString() : string.Empty;
                txtCliente.Text = getCotizacion.NombreCliente ?? string.Empty;
                txtSucursal.Text = getCotizacion.NombreSucursal ?? string.Empty;
                txtReferencia.Text = getCotizacion.Referencia ?? string.Empty;
                txtObra.Text = getCotizacion.Obra ?? string.Empty;
                txtContacto.Text = getCotizacion.NombreContacto ?? string.Empty;
                txtVendedor.Text = getCotizacion.NombreVendedor ?? string.Empty;
                txtMoneda.Text = getCotizacion.Moneda ?? string.Empty;
                txtTipoCambio.Text = getCotizacion.TipoCambio.HasValue ? getCotizacion.TipoCambio.Value.ToString("N") : string.Empty;

                txtTipoCotizacion.Text = listTipoCotizacion != null ? getCotizacion.IdTipoCotizacion.HasValue ? listTipoCotizacion.FirstOrDefault(x => x.IdTipoCotizacion == getCotizacion.IdTipoCotizacion.Value) != null ? listTipoCotizacion.FirstOrDefault(x => x.IdTipoCotizacion == getCotizacion.IdTipoCotizacion.Value).Descripcion : string.Empty : string.Empty : string.Empty;
                txtDocumentoCliente.Text = selCliente != null ? selCliente.RucCliente : string.Empty;

                CotizacionDetalleBLL cotizacionDetalleBLL = new CotizacionDetalleBLL();
                gridCotizacionEquipos.DataSource = cotizacionDetalleBLL.Listar(getCotizacion);

                CotizacionCondicionBLL cotizacionCondicionBLL = new CotizacionCondicionBLL();
                gridCondicion.DataSource = cotizacionCondicionBLL.Listar(getCotizacion);
            }
        }

        private void gridCondicion_SelectionChanged(object sender, EventArgs e)
        {
            if (gridCondicion.SelectedRows.Count > 0)
            {
                Entidades.CotizacionCondicion selectedCotiCondicion = gridCondicion.SelectedRows[0].DataBoundItem as Entidades.CotizacionCondicion;

                if (selectedCotiCondicion != null)
                {
                    txtCondicion.Text = selectedCotiCondicion.Descripcion.Trim();
                }
            }
        }

        private void gridCotizacionEquipos_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridCotizacionEquipos.DataSource != null)
            {
                gridCotizacionEquipos.Columns["IdCotizacionDetalle"].Visible = false;
                gridCotizacionEquipos.Columns["IdCotizacion"].Visible = false;
                gridCotizacionEquipos.Columns["IdEquipo"].Visible = false;
                gridCotizacionEquipos.Columns["Secuencia"].Visible = false;
                gridCotizacionEquipos.Columns["Alternativa"].Visible = false;
                gridCotizacionEquipos.Columns["NombreEquipo"].HeaderText = "Equipo";
                gridCotizacionEquipos.Columns["NombreEquipo"].DisplayIndex = 2;
                gridCotizacionEquipos.Columns["CodigoEquipo"].HeaderText = "Código del equipo";
                gridCotizacionEquipos.Columns["CodigoEquipo"].DisplayIndex = 1;
                gridCotizacionEquipos.Columns["SerieEquipo"].HeaderText = "Serie";
                gridCotizacionEquipos.Columns["SerieEquipo"].DisplayIndex = 3;
            }
        }
    }
}
